/*******************************************************************************
 * Wobly - Wowd's byte-level serialization protocol
 * Copyright 2008-2011 Wowd Inc. All rights reserved.
 * http://code.google.com/p/wobly/
 *
 * Wobly is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation, either version 3
 * of the License, or (at your option) any later version.
 *
 * Wobly is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with Wobly. If not, see <http://www.gnu.org/licenses/>.
 *******************************************************************************/
package com.wowd.wobly.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.wowd.wobly.WoblyUtils.Format;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface WoblyTypeOptions
{
	Format specialFormat() default Format.DEFAULT;
	/**
	 * Marks that this element has unmodifiable serialization structure.
	 * No new elements can be added, or old elements removed, but it takes less size.
	 * 
	 * If class is unmodifiable, it should extends UnmodifiableWoblyImpl
	 * @return
	 */
	boolean unmodifiable() default false;
	/**
	 * Allows you to manually implement serialization.
	 * If selected, all advantages of Wobly serialization
	 * will not be used, so select only when required.
	 * 
	 * @return
	 */
	boolean manualSerializatoin() default false;
}
